Проба СВект.
Главная     ◄Глагол     ◄Азбука     ◄Задачи на Глаголе     Примеры приложений ►   Среда разработки ►   Отладка программ ►   Отличия от Оберона ►   Отличия от Паскаля ►   Ассемблер ARM ►   Глагол для ARM ►   ? и Ответы
 
 glagol.png Программируем по-русски
 

Основная задача Глагола — дать человеку возможность воплощать свои мысли на языке, близком к его родному языку.

Издатель Глагола
 

 

(******************************************************************************)
(**)                        ОТДЕЛ ПроСВект+;
(******************************************************************************
 * НАЗНАЧЕНИЕ: 
 *   нахождение тех собственных векторов квадратной матрицы, которые
 *   соответствуют вещественным собственным значениям
 *
 * ПРИМЕЧАНИЯ: 
 *   Исходная матрица записана в файле "ПроМатр5.дан".
 *   В этом файле 1-я строка содержит размер матрицы (строк и столбцов),
 *   а последующие строки содержат значения элементов матрицы.
 ******************************************************************************)
ИСПОЛЬЗУЕТ
  Вект   ИЗ "...\Отделы\Числа\",
  Матр   ИЗ "...\Отделы\Числа\",
  Собств ИЗ "...\Отделы\Числа\",
  МатрВВ ИЗ "...\Отделы\Числа\",
  Читать ИЗ "...\Отделы\Обмен\",
  Вывод  ИЗ "...\Отделы\Обмен\";

(******************************************************************************)
ЗАДАЧА Голова;
ПОСТ
  TOL = 1.D-6; (* точность для вычислений с. векторов *)
ПЕР
  п:Читать.Поток;
  М,М1:Матр.Доступ;   (* исходная и запасная матрица *)
  в:Вект.Доступ;      (* с. вектора *)
  сзВещ,сзМнм:Вект.Доступ;
  i,n:ЦЕЛ;
УКАЗ
  п:=МатрВВ.ОткрытьПоток("ПроМатр5.дан");
  М:=МатрВВ.ЧитатьМатр(п);
  Читать.Закрыть(п);
  n:=РАЗМЕР(М^);
  СОЗДАТЬ(сзВещ,n);
  СОЗДАТЬ(сзМнм,n);
  СОЗДАТЬ,n);
  СОЗДАТЬ(М1,n,n);
  Матр.Списать(М^,М1^);
  Вывод.Цепь("^Исходная матрица:^");
  МатрВВ.ВыводМатр("%8.4f",М^);
  ЕСЛИ Собств.Значения(М^,сзВещ^,сзМнм^) = 0 ТО
    Вывод.Цепь("^Действительная часть собственных значений:^");
    МатрВВ.ВыводВект("%8.4f",сзВещ^);
    Вывод.Цепь("Мнимая часть собственных значений:^");
    МатрВВ.ВыводВект("%8.4f",сзМнм^);
    ОТ i:=0 ДО n-1 ВЫП
      ЕСЛИ сзМнм[i] = 0 ТО
        Вывод.ЧВещ("^Действительное собственное значение: %8.4f^",сзВещ[i],0,0,0);
        ЕСЛИ Собств.Вектор(М^,сзВещ[i],TOL,в^) = 0 ТО
          Вывод.Цепь("Соответствующий собственный вектор:^");
          МатрВВ.ВыводВект("%8.4f",в^);
        ИНАЧЕ
          Вывод.Цепь("Нет схождения!^")
        КОН
      КОН 
    КОН
  ИНАЧЕ
    Вывод.Цепь("^Нет схождения!^")
  КОН
КОН Голова;

(******************************************************************************)
УКАЗ
  Голова
КОН ПроСВект.




Вопросы, замечания и предложения высылайте на atimopheyev@yahoo.com или Издателю Глагола:
 email
 
Главная     ◄Глагол     ◄Азбука     ◄Задачи на Глаголе     Примеры приложений ►   Среда разработки ►   Отладка программ ►   Отличия от Оберона ►   Отличия от Паскаля ►   Ассемблер ARM ►   Глагол для ARM ►   ? и Ответы